#ifndef __IBASE_PACKAGE_HPP__
#define __IBASE_PACKAGE_HPP__

#include "Client.h"
#include "PackageReader.h"
#include "PackageWriter.h"
#include <memory>

namespace PocketSurvival
{
    class IBasePackage
    {
    public:
        virtual ~IBasePackage();
        virtual void writeData(PackageWriter &packageWriter) = 0;
        virtual void readData(PackageReader &packageReader) = 0;
        virtual void handle() = 0;
        virtual uint8_t getID() = 0;
        virtual std::shared_ptr<IBasePackage> createNewPackage() = 0;
    };

    inline IBasePackage::~IBasePackage(){}
    
} // namespace PocketSurvival

#endif
